home *** CD-ROM | disk | FTP | other *** search
/ The CICA Windows Explosion! / The CICA Windows Explosion! - Disc 2.iso / pdoxwin / pi0994.zip / JM0994.EXE / UTILTRAC.SC < prev   
Text File  |  1994-08-09  |  29KB  |  897 lines

  1. ;************************************************************************
  2. ;  The following Library of procedures are:
  3. ;
  4. ;     Copyrighted (c) 1992-94 Micro-Phyla Systems  All Rights Reserved
  5. ;     Author: John B. Moore
  6. ;     5256 South Mission Rd. Suite #110
  7. ;     Bonsall Calif. 92003
  8. ;     (619) 631-3085
  9. ;
  10. ;**************************************************************************
  11.  
  12.  
  13. ; ============================================================
  14. ; 09-06-93
  15. ; Creates TracTuner windows
  16. ; ------------------------------------------------------------
  17. PROC TracTunerCreateWindows_u()
  18.    PRIVATE Procname.a,
  19.            attrib_bag,
  20.            h
  21.    Procname.a = "TracTunerCreateWindows_u"
  22.    ;- we need three windows: Triggers, Procs, Watch
  23.    ECHO OFF
  24.    h = SaveWindowHandle_n()
  25.    ;--update var memory estimate
  26.    tr_varmem_a = "Not Available"
  27.     ; -- reset video
  28.     MENU {≡} {Video} {D: EGA/VGA: 80x43/50}
  29.    ;- setup basic attribs..
  30.    DYNARRAY attrib_bag[]
  31.       attrib_bag["CANCLOSE"] = FALSE
  32.       attrib_bag["CANMAXIMIZE"] = FALSE
  33.       attrib_bag["CANRESIZE"] = FALSE
  34.       attrib_bag["CANMOVE"] = FALSE
  35.       attrib_bag["FLOATING"] = TRUE
  36.       attrib_bag["HASSHADOW"] = FALSE
  37.       attrib_bag["HASFRAME"] = FALSE
  38.       attrib_bag["MAXIMIZED"] = FALSE
  39.       attrib_bag["CANVASHEIGHT"] = 200
  40.  
  41.    ;- Triggers window
  42.       attrib_bag["TITLE"] = "Triggers"
  43.       attrib_bag["ORIGINCOL"] = 0
  44.       attrib_bag["ORIGINROW"] = 24
  45.       attrib_bag["WIDTH"] = 40
  46.       attrib_bag["HEIGHT"] = 12
  47.       attrib_bag["STYLE"] = 31  ;white on blue
  48.       WINDOW CREATE ATTRIBUTES attrib_bag TO g_handle_bag["TRIGGERS"]
  49.       PAINTCANVAS ATTRIBUTE 31 ALL
  50.  
  51.     ;-- Procs window
  52.       attrib_bag["TITLE"] = "Procs"
  53.       attrib_bag["ORIGINCOL"] = 40
  54.       attrib_bag["ORIGINROW"] = 24
  55.       attrib_bag["WIDTH"] = 40
  56.       attrib_bag["HEIGHT"] = 12
  57.       attrib_bag["STYLE"] = 111  ;white on brown
  58.       WINDOW CREATE ATTRIBUTES attrib_bag TO g_handle_bag["PROCS"]
  59.       PAINTCANVAS ATTRIBUTE 111 ALL
  60.  
  61.     ;--Watch window
  62.       attrib_bag["TITLE"] = "Watch"
  63.         ;--so we can scroll this window
  64.       attrib_bag["HASFRAME"] = TRUE
  65.       attrib_bag["ORIGINCOL"] = 0
  66.       attrib_bag["ORIGINROW"] = 36
  67.       attrib_bag["WIDTH"] = 55
  68.       attrib_bag["HEIGHT"] = 13
  69.       attrib_bag["STYLE"] = 48
  70.       WINDOW CREATE ATTRIBUTES attrib_bag TO g_handle_bag["WATCH"]
  71.       PAINTCANVAS ATTRIBUTE 48 ALL
  72.  
  73.     ;- Memory  window
  74.       attrib_bag["TITLE"] = "Memory"
  75.       attrib_bag["HASFRAME"] = FALSE
  76.       attrib_bag["ORIGINCOL"] = 55
  77.       attrib_bag["ORIGINROW"] = 36
  78.       attrib_bag["WIDTH"] = 25
  79.       attrib_bag["HEIGHT"] = 13
  80.       attrib_bag["STYLE"] = 32  ;black on green
  81.       WINDOW CREATE ATTRIBUTES attrib_bag TO g_handle_bag["MEMORY"]
  82.       PAINTCANVAS ATTRIBUTE 32 ALL
  83.  
  84.     ;- define dynarrays..
  85.     DYNARRAY  tr_trigger_bag[]
  86.     DYNARRAY  tr_procs_bag[]
  87.  
  88.     WINDOW SELECT h
  89.     WINDOW SELECT h
  90.     ECHO NORMAL
  91.  
  92. ENDPROC
  93. ;("TracTunerCreateWindows_u")
  94.  
  95. ; ============================================================
  96. ; 09-06-93
  97. ;
  98. ; ------------------------------------------------------------
  99. PROC TracTunerDestroyWindows_u()
  100.    PRIVATE Procname.a,
  101.            h
  102.    Procname.a = "TracTunerDestroyWindows_u"
  103.    IF ISASSIGNED(g_handle_bag["TRIGGERS"]) AND
  104.       ISWINDOW(g_handle_bag["TRIGGERS"]) THEN
  105.       ECHO OFF
  106.       h = SaveWindowHandle_n()
  107.       ;- close windows
  108.       WINDOW SELECT g_handle_bag["TRIGGERS"]
  109.       WINDOW SELECT g_handle_bag["TRIGGERS"]
  110.       WINDOW CLOSE
  111.       WINDOW SELECT g_handle_bag["PROCS"]
  112.       WINDOW SELECT g_handle_bag["PROCS"]
  113.       WINDOW CLOSE
  114.       WINDOW SELECT g_handle_bag["WATCH"]
  115.       WINDOW SELECT g_handle_bag["WATCH"]
  116.       WINDOW CLOSE
  117.       WINDOW SELECT g_handle_bag["MEMORY"]
  118.       WINDOW SELECT g_handle_bag["MEMORY"]
  119.       WINDOW CLOSE
  120.       ;- release vars related to  TracTuner
  121.       RELEASE VARS  g_handle_bag["TRIGGERS"],
  122.                   g_handle_bag["PROCS"],
  123.                   g_handle_bag["WATCH"],
  124.                   g_handle_bag["MEMORY"],
  125.                   tr_trigger_bag,
  126.                   tr_procs_bag,
  127.                   tr_memory_bag,
  128.                   g_cycle_n,
  129.                   tr_varmem_a
  130.  
  131.       ; -- reset video
  132.       MENU {≡} {Video} {C: EGA/VGA: 80x25}
  133.       WINDOW SELECT h
  134.       WINDOW SELECT h
  135.       ;- upon shifting back to 80x25 a former max window will only
  136.       ;  take up half the screen
  137.       WINMAX
  138.   ENDIF
  139. ENDPROC
  140. ;("TracTunerDestroyWindows_u")
  141.  
  142.  
  143. ; ============================================================
  144. ; 09-06-93
  145. ; Main TracTuner proc
  146. ; ------------------------------------------------------------
  147. PROC TracTuner_u(cycle_n,proc_a,trigger_a,type_a,rval_n)
  148.    PRIVATE Procname.a,
  149.            current_h
  150.    Procname.a = "TracTuner_u"
  151.    IF ISASSIGNED(TracTuner_l) AND TracTuner_l THEN
  152.       IF NOT ISASSIGNED(g_cycle_n) THEN
  153.          g_cycle_n = 0
  154.       ENDIF
  155.       ECHO OFF
  156.       current_h = SaveWindowHandle_n()
  157.       IF cycle_n <> g_cycle_n OR
  158.          NOT ISASSIGNED(tr_trigger_bag) THEN
  159.          ;--define or reset arrays
  160.          DYNARRAY  tr_trigger_bag[]
  161.          DYNARRAY  tr_procs_bag[]
  162.       ENDIF
  163.  
  164.       TracTunerRefreshWindows_u(cycle_n,proc_a,trigger_a,type_a,rval_n)
  165.  
  166.       SETCANVAS DEFAULT
  167.       STYLE
  168.       WINDOW SELECT current_h
  169.       WINDOW SELECT current_h
  170.       ;--update cycle
  171.       g_cycle_n = cycle_n
  172.    ENDIF
  173. ENDPROC
  174. ;("TracTuner_u")
  175.  
  176. ; ============================================================
  177. ; 09-06-93
  178. ; Sets up or removes TracTuner
  179. ; ------------------------------------------------------------
  180. PROC TracTunerSetup_n()
  181.    PRIVATE Procname.a
  182.    Procname.a = "TracTunerSetup_n"
  183.    ECHO OFF
  184.    IF ISASSIGNED(TracTuner_l) THEN
  185.       ;--first
  186.       TracTunerDestroyWindows_u()
  187.       IF ISFILE("watch.sc") THEN
  188.          RUN NOREFRESH "DEL watch.sc >>nul"
  189.       ENDIF
  190.       ;--reposition any floating windows ie.
  191.       ;WINDOW MOVE g_handle_bag["SPEEDBAR"] TO 23,0
  192.       RELEASE VARS TracTuner_l
  193.    ELSE
  194.      TracTuner_l = true
  195.       IF ISFILE("watch.sc") THEN
  196.          RUN NOREFRESH "DEL watch.sc >>nul"
  197.       ENDIF
  198.      TracTunerCreateWindows_u()
  199.      ;--reposition any floating windows ie.
  200.      ;WINDOW MOVE g_handle_bag["SPEEDBAR"] TO 23,0
  201.    ENDIF
  202.    ECHO NORMAL
  203.    RETURN 1
  204. ENDPROC
  205. ;("TracTunerSetup_n")
  206.  
  207.  
  208. ; ============================================================
  209. ; 09-06-93
  210. ;
  211. ; ------------------------------------------------------------
  212. PROC TracTunerWatchSetup_n()
  213.    PRIVATE Procname.a,
  214.            arrayname_a,
  215.            d_n,
  216.            v_n,
  217.            a_n,
  218.            tr_array_bag,
  219.            tr_dynarray_bag,
  220.            tr_vars_bag,
  221.            dyna_a,
  222.            array_a,
  223.            vars_a,
  224.            buttonval_v,
  225.            size_n,
  226.            n,
  227.            count_n,
  228.            el,
  229.            elem,
  230.            avar_a,
  231.            z,
  232.            val,
  233.            var,
  234.            size_a
  235.    Procname.a = "TracTunerWatchSetup_n"
  236.    IF NOT ISASSIGNED(TracTuner_l) THEN
  237.       BEEP BEEP RETURN 1
  238.    ENDIF
  239.    ECHO OFF
  240.    QuickMsg_u("Loading watch setup...")
  241.    SaveWorspace_u()
  242.    IF SYSMODE() = "CoEdit" THEN DO_IT! ENDIF
  243.    IF ISFILE("savevars.sc") THEN
  244.       RUN NOREFRESH "RENAME SAVEVARS.SC SAVEVARS.OLD >nul"
  245.    ENDIF
  246.    SAVEVARS ALL
  247.    ;--make sure it is written to disk and file is closed
  248.    z = FILESIZE("savevars.sc")
  249.    ;--- import this into a table
  250.    MENU "TEIAT" SELECT "savevars.sc"
  251.                 SELECT "savevars"
  252.    IF MENUCHOICE() = "Cancel" THEN SELECT "Replace" ENDIF
  253.    ;--update var memory estimate
  254.    tr_varmem_a = STRVAL(NRECORDS("savevars"))
  255.    IF UPPER(TABLE()) = "SAVEVARS" THEN CLEARIMAGE ENDIF
  256.  
  257.    DYNARRAY tr_array_bag[]
  258.    DYNARRAY tr_dynarray_bag[]
  259.    DYNARRAY tr_vars_bag[]
  260.    d_n = 0
  261.    a_n = 0
  262.    v_n = 0
  263.    VIEW "savevars"
  264.    MOVETO [Text]
  265.    SCAN
  266.       SWITCH
  267.          CASE MATCH([],"Dynarray tr_..[]") : LOOP
  268.          CASE MATCH([],"Dynarray ..[]",arrayname_a) :
  269.               ;--grab the name
  270.               d_n = d_n + 1
  271.               tr_dynarray_bag[STRVAL(d_n)] = arrayname_a+
  272.                                              FILL(" ",32-LEN(arrayname_a))
  273.          CASE MATCH([],"Array ..[..]",arrayname_a,size_a) :
  274.               ;--grab the name
  275.               a_n = a_n + 1
  276.               tr_array_bag[STRVAL(a_n)] = arrayname_a+
  277.                                           FILL(" ",32-LEN(arrayname_a))
  278.          CASE ISBLANK([]): LOOP
  279.          CASE MATCH([],"..].."): LOOP  ;array name
  280.          CASE MATCH([],";.."): LOOP  ;comment
  281.          CASE MATCH([],"..=..",var ,val ):
  282.               v_n = v_n + 1
  283.               tr_vars_bag[STRVAL(v_n)] = var+FILL(" ",32-LEN(var))
  284.          OTHERWISE:
  285.               v_n = v_n + 1
  286.               tr_vars_bag[STRVAL(v_n)] = []+FILL(" ",32-LEN([]))
  287.       ENDSWITCH
  288.    ENDSCAN
  289.    CLEARIMAGE
  290.    QuickMsg_u("")
  291.    ; PaintPAL_Generated_Code_Begin(455505211)
  292.  
  293.    SHOWDIALOG "TracTuner Watch Setup"
  294.       PROC "TracTunerWatchSetupProc_l"
  295.          KEY 32
  296.  
  297.       @2,1 HEIGHT 33 WIDTH 77
  298.  
  299.       PICKDYNARRAY @2,1 HEIGHT 13 WIDTH 35
  300.          tr_dynarray_bag
  301.          TAG "dyna"
  302.          TO dyna_a
  303.  
  304.       LABEL @1,13
  305.          "DYNARRAYS"
  306.          FOR "dyna"
  307.  
  308.       PICKDYNARRAY @2,38 HEIGHT 13 WIDTH 35
  309.          tr_array_bag
  310.          TAG "array"
  311.          TO array_a
  312.  
  313.       LABEL @1,53
  314.          "ARRAYS"
  315.          FOR "array"
  316.  
  317.       PICKDYNARRAY @17,1 HEIGHT 13 WIDTH 35
  318.          tr_vars_bag
  319.          TAG "vars"
  320.          TO vars_a
  321.  
  322.       LABEL @16,12
  323.          "VARIABLES"
  324.          FOR "vars"
  325.  
  326.       PUSHBUTTON @19,50 WIDTH 15
  327.          "Watch"
  328.          OK
  329.          VALUE "watch"
  330.          TAG "watch"
  331.          TO buttonval_v
  332.  
  333.       PUSHBUTTON @25,50 WIDTH 15
  334.          "Cancel"
  335.          CANCEL
  336.          DEFAULT
  337.          VALUE "cancel"
  338.          TAG "cancel"
  339.          TO buttonval_v
  340.    ENDDIALOG
  341.  
  342.    ; PaintPAL_Generated_Code_End(455505211)
  343.    IF retval THEN
  344.       QuickMsg_u("Loading watch vars...")
  345.       ;--open new file
  346.       FILEWRITE "WATCH.SC" FROM  "; Watch window script"+"\n\n\n"+
  347.                                  "IF NOT ISASSIGNED(print_l) THEN \n"+
  348.                                  "   print_l = false \n"+
  349.                                  "ENDIF \n\n"
  350.       ;grab all checked values an create a script that will update
  351.       ;all the vars
  352.       count_n = 0
  353.       IF ISASSIGNED(tr_array_bag["1"]) THEN
  354.          FOREACH el IN tr_array_bag
  355.             IF MATCH(tr_array_bag[el],"..√",avar_a) THEN
  356.                WHILE MATCH(avar_a,".. ",avar_a) ENDWHILE
  357.                  FILEWRITE APPEND "WATCH.SC" FROM
  358.                      "size_n = ARRAYSIZE("+avar_a+") \n" +
  359.                      "FOR n FROM 1 TO size_n  \n"+
  360.                      "    IF ISASSIGNED("+avar_a+"[n]) THEN  \n"+
  361.                      "       IF print_l THEN \n"+
  362.                      "          PRINT \""+avar_a+"[\"+STRVAL(n)+\"] = \"+STRVAL("+avar_a+"[n])+\"\\n\" \n" +
  363.                      "       ELSE \n"+
  364.                      "          ? \""+avar_a+"[\"+STRVAL(n)+\"] = \"+STRVAL("+avar_a+"[n]) \n" +
  365.                      "       ENDIF \n"+
  366.                      "    ELSE  \n"+
  367.                      "       IF print_l THEN \n"+
  368.                      "          PRINT \""+avar_a+"[\"+STRVAL(n)+\"] = [VAR UNASSIGNED]\\n\" \n" +
  369.                      "       ELSE \n"+
  370.                      "          ? \""+avar_a+"[\"+STRVAL(n)+\"] = [VAR UNASSIGNED]\" \n" +
  371.                      "       ENDIF \n"+
  372.                      "    ENDIF \n"+
  373.                      "ENDFOR \n\n"
  374.             ENDIF
  375.          ENDFOREACH
  376.       ENDIF
  377.       IF ISASSIGNED(tr_dynarray_bag["1"]) THEN
  378.          FOREACH el IN tr_dynarray_bag
  379.             IF MATCH(tr_dynarray_bag[el],"..√",avar_a) THEN
  380.                WHILE MATCH(avar_a,".. ",avar_a) ENDWHILE
  381.                  FILEWRITE APPEND "WATCH.SC" FROM
  382.                      "FOREACH elem IN "+avar_a+"  \n"+
  383.                      "    IF ISASSIGNED("+avar_a+"[elem]) THEN  \n"+
  384.                      "       IF print_l THEN \n"+
  385.                      "          PRINT \""+avar_a+"[\"+elem+\"] = \"+STRVAL("+avar_a+"[elem])+\"\\n\" \n" +
  386.                      "       ELSE \n"+
  387.                      "          ? \""+avar_a+"[\"+elem+\"] = \"+STRVAL("+avar_a+"[elem]) \n" +
  388.                      "       ENDIF \n"+
  389.                      "    ELSE  \n"+
  390.                      "       IF print_l THEN \n"+
  391.                      "          PRINT \""+avar_a+"[\"+elem+\"] = [VAR UNASSIGNED] \\n\" \n" +
  392.                      "       ELSE \n"+
  393.                      "          ? \""+avar_a+"[\"+elem+\"] = [VAR UNASSIGNED]\" \n" +
  394.                      "       ENDIF \n"+
  395.                      "    ENDIF \n"+
  396.                      "ENDFOREACH \n\n"
  397.             ENDIF
  398.          ENDFOREACH
  399.       ENDIF
  400.       IF ISASSIGNED(tr_vars_bag["1"]) THEN
  401.          FOREACH el IN tr_vars_bag
  402.             IF MATCH(tr_vars_bag[el],"..√",avar_a) THEN
  403.                WHILE MATCH(avar_a,".. ",avar_a) ENDWHILE
  404.                  FILEWRITE APPEND "WATCH.SC" FROM
  405.                      "IF ISASSIGNED("+avar_a+") THEN  \n"+
  406.                      "   IF print_l THEN \n"+
  407.                      "        PRINT \""+avar_a+" = \"+STRVAL("+avar_a+")+\"\\n\" \n" +
  408.                      "   ELSE \n"+
  409.                      "        ? \""+avar_a+" = \"+STRVAL("+avar_a+") \n" +
  410.                      "   ENDIF \n"+
  411.                      "ELSE  \n"+
  412.                      "   IF print_l THEN \n"+
  413.                      "       PRINT \""+avar_a+" = [VAR UNASSIGNED] \\n\" \n" +
  414.                      "   ELSE \n"+
  415.                      "       ? \""+avar_a+" = [VAR UNASSIGNED]\" \n" +
  416.                      "   ENDIF \n"+
  417.                      "ENDIF \n\n"
  418.             ENDIF
  419.          ENDFOREACH
  420.        ENDIF
  421.        ;--make sure file is closed
  422.        z = FILESIZE("watch.sc")
  423.        QuickMsg_u("")
  424.    ENDIF
  425.    IF ISFILE("savevars.old") THEN
  426.        RUN NOREFRESH "RENAME SAVEVARS.OLD SAVEVARS.SC >nul"
  427.    ENDIF
  428.    RestoreWorkspace_u()
  429.    RETURN 1
  430. ENDPROC
  431. ;("TracTunerWatchSetup_N")
  432.  
  433.  
  434.  
  435. ; ============================================================
  436. ; 09-06-93
  437. ;
  438. ; ------------------------------------------------------------
  439. PROC TracTunerWatchSetupProc_l(trigger_a,tag_a,event_v,element_a)
  440.    PRIVATE Procname.a,
  441.            v
  442.    Procname.a = "TracTunerWatchSetupProc_l"
  443.    SWITCH
  444.       CASE  trigger_a = "EVENT" AND tag_a = "dyna" AND
  445.             ISASSIGNED(event_v["KEYCODE"]) AND
  446.             event_v["KEYCODE"] = 32:
  447.             IF MATCH(tr_dynarray_bag[dyna_a],"..√",v) THEN
  448.                tr_dynarray_bag[dyna_a] = v
  449.             ELSE
  450.                tr_dynarray_bag[dyna_a] = SUBSTR(tr_dynarray_bag[dyna_a],1,32)+CHR(251)
  451.             ENDIF
  452.             REFRESHCONTROL "dyna"
  453.             RETURN false
  454.       CASE  trigger_a = "EVENT" AND tag_a = "array" AND
  455.             ISASSIGNED(event_v["KEYCODE"]) AND
  456.             event_v["KEYCODE"] = 32:
  457.             IF MATCH(tr_array_bag[array_a],"..√",v) THEN
  458.                tr_array_bag[array_a] = v
  459.             ELSE
  460.                tr_array_bag[array_a] = SUBSTR(tr_array_bag[array_a],1,32)+CHR(251)
  461.             ENDIF
  462.             REFRESHCONTROL "array"
  463.             RETURN false
  464.       CASE  trigger_a = "EVENT" AND tag_a = "vars" AND
  465.             ISASSIGNED(event_v["KEYCODE"]) AND
  466.             event_v["KEYCODE"] = 32:
  467.             IF MATCH(tr_vars_bag[vars_a],"..√",v) THEN
  468.                tr_vars_bag[vars_a] = v
  469.             ELSE
  470.                tr_vars_bag[vars_a] = SUBSTR(tr_vars_bag[vars_a],1,32)+CHR(251)
  471.             ENDIF
  472.             REFRESHCONTROL "vars"
  473.             RETURN false
  474.    ENDSWITCH
  475.    RETURN true
  476. ENDPROC
  477. ;("TracTunerWatchSetupProc_l")
  478.  
  479.  
  480. ; ============================================================
  481. ; 09-07-93
  482. ; Writes to windows if info is present
  483. ; ------------------------------------------------------------
  484. PROC TracTunerRefreshWindows_u(cycle_n,proc_a,trigger_a,type_a,rval_n)
  485.             ;type_a: "D" = default "C" = coherced
  486.             ;proc_a: ""= no proc executed
  487.             ;rval_n: current retval
  488.    PRIVATE Procname.a,
  489.            el,
  490.            n,
  491.            count_n,
  492.            basetrigger_a,
  493.            abrtrigger_a,
  494.            h,
  495.            var_a,
  496.            rnew_a,
  497.            rmod_a,
  498.            rlck_a,
  499.            w_r,
  500.            winnum_a
  501.    Procname.a = "TracTunerRefreshWindows_u"
  502.    h = SaveWindowHandle_n()
  503.    ;--triggers
  504.    basetrigger_a =  trigger_a
  505.    abrtrigger_a = TracTunerAbrTrigger_a(trigger_a)
  506.    SETCANVAS g_handle_bag["TRIGGERS"]
  507.    STYLE ATTRIBUTE 31
  508.    IF g_cycle_n <> cycle_n THEN
  509.       CLEAR
  510.       PAINTCANVAS ATTRIBUTE 31 ALL
  511.       WINDOW SELECT g_handle_bag["TRIGGERS"]
  512.       WINDOW SCROLL g_handle_bag["TRIGGERS"] TO 0,0
  513.       SETMARGIN OFF
  514.       STYLE ATTRIBUTE 14
  515.       @0,0 ?? FORMAT("W40,AC","* * TRIGGERS * *")
  516.       @2,0
  517.       STYLE ATTRIBUTE 31
  518.    ENDIF
  519.    SETMARGIN 3
  520.    count_n = DYNARRAYSIZE(tr_trigger_bag)
  521.    IF type_a = "C" THEN
  522.       trigger_a = LOWER(trigger_a)
  523.    ENDIF
  524.    IF NOT ISBLANK(proc_a) THEN
  525.       trigger_a =  CHR(251)+trigger_a
  526.    ELSE
  527.       trigger_a = " "+trigger_a
  528.    ENDIF
  529.    ;- place on screen
  530.    ? STRVAL(count_n+1)+"-"+trigger_a
  531.    ;--update cycle history
  532.    tr_trigger_bag[count_n+1] = trigger_a
  533.  
  534.    ;--procs
  535.    SETCANVAS g_handle_bag["PROCS"]
  536.    STYLE ATTRIBUTE 111
  537.    IF g_cycle_n <> cyclenumber_n THEN
  538.       CLEAR
  539.       PAINTCANVAS ATTRIBUTE 111 ALL
  540.       WINDOW SELECT g_handle_bag["PROCS"]
  541.       WINDOW SCROLL g_handle_bag["PROCS"] TO 0,0
  542.       SETMARGIN OFF
  543.       STYLE ATTRIBUTE 14
  544.       @0,0 ?? FORMAT("W40,AC","* * PROCEDURES TRIGGERED * *")
  545.       @2,0
  546.       STYLE ATTRIBUTE 111
  547.    ENDIF
  548.    SETMARGIN 3
  549.    count_n = DYNARRAYSIZE(tr_procs_bag)
  550.    proc_a = abrtrigger_a+proc_a+" = "+STRVAL(rval_n)
  551.    ;- place on screen
  552.    ? proc_a
  553.    ;--update cycle history
  554.    tr_procs_bag[count_n+1] = proc_a
  555.  
  556.    ;- watch vars
  557.    IF ISFILE("watch.sc") AND
  558.       (basetrigger_a = "ARRIVEFIELD" OR
  559.       rval_n = 1)  THEN
  560.       SETCANVAS g_handle_bag["WATCH"]
  561.       STYLE ATTRIBUTE  48
  562.       CLEAR
  563.       PAINTCANVAS ATTRIBUTE 48 ALL
  564.       WINDOW SELECT g_handle_bag["WATCH"]
  565.       WINDOW SCROLL g_handle_bag["WATCH"] TO 0,0
  566.       @0,0
  567.       SETMARGIN 1
  568.         PLAY "watch"
  569.    ENDIF
  570.    ;-- memory status
  571.    IF g_cycle_n <> cyclenumber_n OR
  572.       g_cycle_n <> cyclenumber_n OR
  573.       basetrigger_a = "ARRIVEFIELD" OR
  574.       rval_n = 1  THEN
  575.       IF RECORDSTATUS("New") THEN
  576.          rnew_a = "TRUE"
  577.       ELSE
  578.          rnew_a = "FALSE"
  579.       ENDIF
  580.       IF RECORDSTATUS("Modified") THEN
  581.          rmod_a = "TRUE"
  582.       ELSE
  583.          rmod_a = "FALSE"
  584.       ENDIF
  585.       IF RECORDSTATUS("Locked") THEN
  586.          rlck_a = "TRUE"
  587.       ELSE
  588.          rlck_a = "FALSE"
  589.       ENDIF
  590.       WINDOW LIST TO w_r
  591.       winnum_a = STRVAL(ARRAYSIZE(w_r))
  592.       SETCANVAS g_handle_bag["MEMORY"]
  593.       STYLE ATTRIBUTE  32
  594.       CLEAR
  595.       PAINTCANVAS ATTRIBUTE 32 ALL
  596.       WINDOW SELECT g_handle_bag["MEMORY"]
  597.       WINDOW SCROLL g_handle_bag["MEMORY"] TO 0,0
  598.       SETMARGIN OFF
  599.       STYLE ATTRIBUTE 14
  600.       @0,0 ?? FORMAT("W25,AC","* * INFO STATUS * *")
  601.       @1,0
  602.       STYLE ATTRIBUTE  32
  603.       SETMARGIN 1
  604.        ? "MEMLEFT()   = "+STRVAL(memleft())
  605.        ? "RMEMLEFT()  = "+STRVAL(rmemleft())
  606.        ? "RSTATUS-NEW = "+rnew_a
  607.        ? "RSTATUS-MOD = "+rmod_a
  608.        ? "RSTATUS-LCK = "+rlck_a
  609.        ? "LINKTYPE    = "+LINKTYPE()
  610.        ? "TABLE       = "+TABLE()
  611.        ? "VAR-MEM     = "+tr_varmem_a
  612.        ? "#IMAGES     = "+STRVAL(NIMAGES())
  613.        ? "#WINDOWS    = "+winnum_a
  614.    ENDIF
  615.    WINDOW SELECT h
  616.    WINDOW SELECT h
  617. ENDPROC
  618. ;("TracTunerRefreshWindows_u")
  619.  
  620.  
  621. ; ============================================================
  622. ; 09-07-93
  623. ;
  624. ; ------------------------------------------------------------
  625. PROC TracTunerPrint_n()
  626.    PRIVATE Procname.a,
  627.            count_n,
  628.            n,
  629.            rnew_a,
  630.            rmod_a,
  631.            rlck_a
  632.    Procname.a = "TracTunerPrint_n"
  633.    OPEN PRINTER
  634.    PRINT  FORMAT("W80,AC","* * * T R A C K E R * * *"),"\n\n",
  635.           FILL("=",80),"\n\n\n"
  636.  
  637.    IF ISASSIGNED(tr_trigger_bag["1"]) THEN
  638.       count_n = DYNARRAYSIZE(tr_trigger_bag)
  639.       PRINT "TRIGGERS","\n",
  640.             "============"+"\n"
  641.       FOR n FROM 1 TO count_n
  642.          PRINT SPACES(5),tr_trigger_bag[n],"\n"
  643.       ENDFOR
  644.       PRINT "\n\n"
  645.    ENDIF
  646.  
  647.    IF ISASSIGNED(tr_procs_bag["1"]) THEN
  648.       count_n = DYNARRAYSIZE(tr_procs_bag)
  649.       PRINT "PROCEDURES EXECUTED","\n",
  650.             "===================="+"\n"
  651.       FOR n FROM 1 TO count_n
  652.          PRINT SPACES(5),tr_procs_bag[n],"\n"
  653.       ENDFOR
  654.       PRINT "\n\n"
  655.    ENDIF
  656.  
  657.    IF ISFILE("watch.sc") THEN
  658.       PRINT "WATCH VARIABLES","\n",
  659.             "===================="+"\n"
  660.       print_l = true
  661.       PLAY "watch"
  662.       print_l = false
  663.       PRINT "\n\n"
  664.    ENDIF
  665.       IF RECORDSTATUS("New") THEN
  666.          rnew_a = "TRUE"
  667.       ELSE
  668.          rnew_a = "FALSE"
  669.       ENDIF
  670.       IF RECORDSTATUS("Modified") THEN
  671.          rmod_a = "TRUE"
  672.       ELSE
  673.          rmod_a = "FALSE"
  674.       ENDIF
  675.       IF RECORDSTATUS("Locked") THEN
  676.          rlck_a = "TRUE"
  677.       ELSE
  678.          rlck_a = "FALSE"
  679.       ENDIF
  680.       PRINT "INFO STATUS","\n",
  681.             "===================="+"\n"
  682.        PRINT " MEMLEFT()  = "+STRVAL(memleft())+"\n"+
  683.              "RMEMLEFT()  = "+STRVAL(rmemleft())+"\n"+
  684.              "RSTATUS-NEW = "+rnew_a+"\n"+
  685.              "RSTATUS-MOD = "+rmod_a+"\n"+
  686.              "RSTATUS-LCK = "+rlck_a+"\n"+
  687.              "LINKTYPE    = "+LINKTYPE()+"\n"+
  688.              "VAR-MEM     = "+tr_varmem_a+"\n"+
  689.              "TABLE       = "+TABLE()+"\n"
  690.    PRINT "\f"
  691.    CLOSE PRINTER
  692.    RETURN 1
  693. ENDPROC
  694. ;("TracTunerPrint_n")
  695.  
  696. ; ============================================================
  697. ; 09-07-93
  698. ; returns abreviation of trigger
  699. ; ------------------------------------------------------------
  700. PROC TracTunerAbrTrigger_a(eventype_a)
  701.    PRIVATE Procname.a
  702.    Procname.a = "TracTunerAbrTrigger_a"
  703.       SWITCH
  704.          CASE eventype_a = "VALCHECK"    :RETURN "VC-"
  705.          CASE eventype_a = "DEPARTFIELD" :RETURN "DF-"
  706.          CASE eventype_a = "DEPARTROW"   :RETURN "DR-"
  707.          CASE eventype_a = "POSTRECORD"  :RETURN "PR-"
  708.          CASE eventype_a = "DEPARTABLE"  :RETURN "DT-"
  709.          CASE eventype_a = "DEPARTPAGE"  :RETURN "DP-"
  710.          CASE eventype_a = "ARRIVEPAGE"  :RETURN "AP-"
  711.          CASE eventype_a = "ARRIVEWINDOW":RETURN "AW-"
  712.          CASE eventype_a = "ARRIVETABLE" :RETURN "AT-"
  713.          CASE eventype_a = "ARRIVEROW"   :RETURN "AR-"
  714.          CASE eventype_a = "ARRIVEFIELD" :RETURN "AF-"
  715.          ;--added 4.5 triggers
  716.          CASE eventype_a = "INSRECORD"     :RETURN "IR-"
  717.          CASE eventype_a = "DELRECORD"     :RETURN "DL-"
  718.          CASE eventype_a = "TOUCHFIELD"    :RETURN "TF-"
  719.          CASE eventype_a = "ENDFIELDVIEW"  :RETURN "EF-"
  720.          CASE eventype_a = "FIELDVIEW"     :RETURN "FV-"
  721.          CASE eventype_a = "LOOKUP"        :RETURN "LK-"
  722.          CASE eventype_a = "MENU"          :RETURN "MU-"
  723.          CASE eventype_a = "UNDOCHANGE"    :RETURN "UC-"
  724.          CASE eventype_a = "UNDODEL"       :RETURN "UD-"
  725.          CASE eventype_a = "UNDOINS"       :RETURN "UI-"
  726.          CASE eventype_a = "UNDOUNPOST"    :RETURN "UP-"
  727.          CASE eventype_a = "CLOSE"         :RETURN "CL-"
  728.          CASE eventype_a = "DONE"          :RETURN "DN-"
  729.          CASE eventype_a = "OPEN"          :RETURN "OP-"
  730.          CASE eventype_a = "FLYAWAY"       :RETURN "FA-"
  731.          CASE eventype_a = "RECORDDELETED" :RETURN "RD-"
  732.          CASE eventype_a = "RECORDCHANGED" :RETURN "RC-"
  733.          CASE eventype_a = "ENDCYCLE"      :RETURN "EC-"
  734.          CASE eventype_a = "REFRESH"       :RETURN "RF-"
  735.          OTHERWISE : RETURN "NA-"
  736.       ENDSWITCH
  737. ENDPROC
  738. ;("TracTunerAbrTrigger_a")
  739.  
  740. ;==============================================================
  741. ; Last compiled:  9/07/93
  742. ;
  743. ;--------------------------------------------------------------
  744. PROC TRACMenudef_n()
  745.    PRIVATE Procname_a
  746.    Procname_a = "TRACMenudef_n"
  747.    SHOWPOPUP " TracTuner System "  CENTERED
  748.       "~S~tart TracTuner":"Start TracTuner System":"start",
  749.       "~C~lose TracTuner":"Close TracTuner System":"close",
  750.       "~W~atch Setup"  :"Setup Watch vars":"watch",
  751.       "~V~ars Status"  :"Current Savevars":"save",
  752.       "Win~d~ow Status Short":"Current Window Status printout, short version":"wins",
  753.       "Window Status ~L~ong":"Current Window Status printout, long version":"winl",
  754.       "~P~rint TracTuner Values":"Print the current TracTuner values":"print",
  755.       "~Q~uit TracTuner Menu":"Close TracTuner menu":"quit"
  756.    ENDMENU TO choice_a
  757.       SWITCH
  758.          CASE choice_a = "watch" :
  759.             TracTunerWatchSetup_n()
  760.          CASE choice_a = "quit" :
  761.             RETURN 1
  762.          CASE choice_a = "print" :
  763.             TracTunerPrint_n()
  764.          CASE choice_a = "close" :
  765.             TracTunerSetup_n()
  766.          CASE choice_a = "start" :
  767.             TracTunerSetup_n()
  768.          CASE choice_a = "save" :
  769.             TracTunerSaveVarList_n()
  770.          CASE choice_a = "wins" :
  771.             DebugWin_u()
  772.          CASE choice_a = "winl" :
  773.             DebugWindowInfo_u("TracTunner")
  774.       ENDSWITCH
  775.     RETURN 1
  776. ENDPROC
  777. ;("TRACMenudef_n")
  778.  
  779. ; ============================================================
  780. ; 09-07-93
  781. ; Mini Wait on Watch window
  782. ; ------------------------------------------------------------
  783. PROC TracTunerWatchWait_n()
  784.    PRIVATE Procname.a,
  785.            trac_bag,
  786.            h
  787.    Procname.a = "TracTunerWatchWait_n"
  788.    h = GETWINDOW()
  789.    WINDOW SELECT g_handle_bag["WATCH"]
  790.    WINDOW SELECT g_handle_bag["WATCH"]
  791.    ECHO NORMAL
  792.    WHILE TRUE
  793.       GETEVENT  MOUSE "ALL" TO trac_bag
  794.       SWITCH
  795.          CASE trac_bag["TYPE"] = "MOUSE" :
  796.             IF WINDOWAT(trac_bag["ROW"],trac_bag["COL"]) =
  797.                g_handle_bag["WATCH"] THEN
  798.                EXECEVENT trac_bag
  799.                LOOP
  800.             ELSE
  801.                QUITLOOP
  802.             ENDIF
  803.          OTHERWISE: BEEP BEEP LOOP
  804.       ENDSWITCH
  805.    ENDWHILE
  806.    WINDOW SELECT h
  807.    WINDOW SELECT h
  808.    RETURN 1
  809. ENDPROC
  810. ;("TracTunerWatchWait_n")
  811.  
  812.  
  813. ; ============================================================
  814. ; 09-10-93
  815. ; Complete variable list
  816. ; ------------------------------------------------------------
  817. PROC TracTunerSaveVarList_n()
  818.    PRIVATE Procname.a,
  819.            tr_savevar_bag,
  820.            v_n,
  821.            save_a,
  822.            buttonval_v
  823.    Procname.a = "TracTunerSaveVarList_n"
  824.    IF NOT ISASSIGNED(TracTuner_l) THEN
  825.       BEEP BEEP RETURN 1
  826.    ENDIF
  827.    ECHO OFF
  828.    QuickMsg_u("Loading Savevar setup...")
  829.    SaveWorspace_u()
  830.    IF SYSMODE() = "CoEdit" THEN DO_IT! ENDIF
  831.    IF ISFILE("savevars.sc") THEN
  832.       RUN NOREFRESH "RENAME SAVEVARS.SC SAVEVARS.OLD >nul"
  833.    ENDIF
  834.    SAVEVARS ALL
  835.    ;--make sure it is written to disk and file is closed
  836.    z = FILESIZE("savevars.sc")
  837.    ;--- import this into a table
  838.    MENU "TEIAT" SELECT "savevars.sc"
  839.                 SELECT "savevars"
  840.    IF MENUCHOICE() = "Cancel" THEN SELECT "Replace" ENDIF
  841.    ;--update var memory estimate
  842.    tr_varmem_a = STRVAL(NRECORDS("savevars"))
  843.  
  844.    DYNARRAY tr_savevar_bag[]
  845.    v_n = 0
  846.    IF UPPER(TABLE()) <> "SAVEVARS" THEN
  847.       VIEW "savevars"
  848.    ENDIF
  849.    MOVETO [Text]
  850.    SCAN
  851.       SWITCH
  852.          CASE MATCH([],"Dynarray tr_..[]") : LOOP
  853.          CASE MATCH([],"Dynarray tr_..[..]..") : LOOP
  854.          CASE MATCH([],";.."): LOOP  ;comment
  855.          CASE ISBLANK([]): LOOP  ;blank
  856.          OTHERWISE:
  857.             v_n = v_n + 1
  858.             tr_savevar_bag[STRVAL(v_n)] = []
  859.       ENDSWITCH
  860.    ENDSCAN
  861.    CLEARIMAGE
  862.    QuickMsg_u("")
  863.   ; PaintPAL_Generated_Code_Begin(455766953)
  864.  
  865.   SHOWDIALOG "Savevars"
  866.      @2,2 HEIGHT 46 WIDTH 75
  867.  
  868.      ; PaintPAL_Frame_Begin
  869.      FRAME DOUBLE FROM 0,1 TO 40,71
  870.      PAINTCANVAS ATTRIBUTE 127 0,1,0,71
  871.      PAINTCANVAS ATTRIBUTE 112 40,1,40,71
  872.      PAINTCANVAS ATTRIBUTE 127 0,1,40,1
  873.      PAINTCANVAS ATTRIBUTE 112 0,71,40,71
  874.      ; PaintPAL_Frame_End
  875.  
  876.      PICKDYNARRAY @1,2 HEIGHT 39 WIDTH 68
  877.         tr_savevar_bag
  878.         TAG "save"
  879.         TO save_a
  880.  
  881.      PUSHBUTTON @42,29 WIDTH 15
  882.         "Return"
  883.         CANCEL
  884.         VALUE "return"
  885.         TAG "return"
  886.         TO buttonval_v
  887.   ENDDIALOG
  888.  
  889.   ; PaintPAL_Generated_Code_End(455766953)
  890.    IF ISFILE("savevars.old") THEN
  891.        RUN NOREFRESH "RENAME SAVEVARS.OLD SAVEVARS.SC >nul"
  892.    ENDIF
  893.    RestoreWorkspace_u()
  894.    RETURN 1
  895. ENDPROC
  896. ;("TracTunerSaveVarList_n")
  897.